what is a constructive proof